﻿package frEngine.loaders.particleSub.particleInstance
{
    import flash.geom.*;

    public class ConeData extends MeshBase
    {
        private var _radius1:Number;
        private var _radius2:Number;
        private var _height:Number;
        private var _segments:int;

        public function ConeData(param1:Number = 5, param2:Number = 0, param3:Number = 10, param4:int = 12)
        {
            super(0, 8, true, false);
            this.createCone(param1, param2, param3, param4);
            this.numVertex = this.vertexVector.length / this.sizePerVertex;
            return;
        }// end function

        public function createCone(param1:Number = 5, param2:Number = 0, param3:Number = 10, param4:int = 12) : void
        {
            var _loc_5:int = 0;
            var _loc_6:int = 0;
            var _loc_7:Number = NaN;
            var _loc_8:Number = NaN;
            var _loc_9:Number = NaN;
            var _loc_10:Number = NaN;
            var _loc_11:int = 0;
            var _loc_12:int = 0;
            var _loc_13:Number = NaN;
            this._segments = param4;
            this._height = param3;
            this._radius2 = param2;
            this._radius1 = param1;
            vertexVector = new Vector.<Number>;
            indexVector = new Vector.<uint>;
            var _loc_14:* = new Vector3D();
            var _loc_15:* = param4;
            _loc_7 = 0;
            while (_loc_7 <= _loc_15)
            {
                
                _loc_9 = 0;
                _loc_8 = Math.cos(_loc_7 / _loc_15 * Math.PI * 2);
                _loc_10 = -Math.sin(_loc_7 / _loc_15 * Math.PI * 2);
                _loc_14.x = _loc_8;
                _loc_14.y = (param1 - param2) / param3;
                _loc_14.z = _loc_10;
                _loc_14.normalize();
                vertexVector.push(_loc_8 * param1, 0, _loc_10 * param1, _loc_7 / param4, 1, _loc_14.x, _loc_14.y, _loc_14.z);
                vertexVector.push(_loc_8 * param2, param3, _loc_10 * param2, _loc_7 / param4, 0, _loc_14.x, _loc_14.y, _loc_14.z);
                _loc_5++;
                _loc_7 = _loc_7 + 1;
            }
            if (param1 > 0)
            {
                _loc_11 = vertexVector.length / sizePerVertex;
                _loc_7 = 0;
                while (_loc_7 <= _loc_15)
                {
                    
                    _loc_8 = Math.cos(_loc_7 / _loc_15 * Math.PI * 2) * param1;
                    _loc_10 = (-Math.sin(_loc_7 / _loc_15 * Math.PI * 2)) * param1;
                    vertexVector.push(_loc_8, 0, _loc_10, _loc_8 / this._radius1 * 0.5, _loc_10 / this._radius1 * 0.5, 0, -1, 0);
                    _loc_7 = _loc_7 + 1;
                }
            }
            if (param2 > 0)
            {
                _loc_12 = vertexVector.length / sizePerVertex;
                _loc_7 = 0;
                while (_loc_7 <= _loc_15)
                {
                    
                    _loc_8 = Math.cos(_loc_7 / _loc_15 * Math.PI * 2) * param2;
                    _loc_10 = (-Math.sin(_loc_7 / _loc_15 * Math.PI * 2)) * param2;
                    vertexVector.push(_loc_8, param3, _loc_10, _loc_8 / this._radius2 * 0.5, _loc_10 / this._radius2 * 0.5, 0, 1, 0);
                    _loc_7 = _loc_7 + 1;
                }
            }
            _loc_5 = 0;
            _loc_7 = 0;
            while (_loc_7 < _loc_15)
            {
                
                var _loc_16:* = _loc_5 + 1;
                indexVector[_loc_16] = _loc_7 * 2 + 2;
                var _loc_17:* = _loc_5 + 1;
                indexVector[_loc_17] = _loc_7 * 2 + 1;
                var _loc_18:* = _loc_5 + 1;
                indexVector[_loc_18] = _loc_7 * 2;
                var _loc_19:* = _loc_5 + 1;
                indexVector[_loc_19] = _loc_7 * 2 + 2;
                var _loc_20:* = _loc_5 + 1;
                indexVector[_loc_20] = _loc_7 * 2 + 3;
                var _loc_21:* = _loc_5 + 1;
                indexVector[_loc_21] = _loc_7 * 2 + 1;
                _loc_7 = _loc_7 + 1;
            }
            if (param1 > 0)
            {
                _loc_7 = 1;
                while (_loc_7 < (_loc_15 - 1))
                {
                    
                    var _loc_16:* = _loc_5 + 1;
                    indexVector[_loc_16] = _loc_11 + _loc_7 + 1;
                    var _loc_17:* = _loc_5 + 1;
                    indexVector[_loc_17] = _loc_11 + _loc_7;
                    var _loc_18:* = _loc_5 + 1;
                    indexVector[_loc_18] = _loc_11;
                    _loc_7 = _loc_7 + 1;
                }
            }
            if (param2 > 0)
            {
                _loc_7 = 1;
                while (_loc_7 < (_loc_15 - 1))
                {
                    
                    var _loc_16:* = _loc_5 + 1;
                    indexVector[_loc_16] = _loc_12;
                    var _loc_17:* = _loc_5 + 1;
                    indexVector[_loc_17] = _loc_12 + _loc_7;
                    var _loc_18:* = _loc_5 + 1;
                    indexVector[_loc_18] = _loc_12 + _loc_7 + 1;
                    _loc_7 = _loc_7 + 1;
                }
            }
            return;
        }// end function

        public function get radius1() : Number
        {
            return this._radius1;
        }// end function

        public function get radius2() : Number
        {
            return this._radius2;
        }// end function

        public function get height() : Number
        {
            return this._height;
        }// end function

        public function get segments() : int
        {
            return this._segments;
        }// end function

    }
}
